home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / nikto / plugins / nikto_headers.plugin < prev    next >
Text File  |  2005-10-28  |  4KB  |  94 lines

  1. #VERSION,1.10
  2. #LASTMOD,09.07.2005
  3. # (c) 2001-2005 cirt.net, All Rights Reserved
  4. # HTTP headers check
  5.  
  6. #######################################################################
  7. # This software is distributed under the terms of the GPL, which should have been received
  8. # with a copy of this software in the "LICENSE.txt" file.
  9. # this just gets the headers & finds any interesting ones
  10. #######################################################################
  11. sub nikto_headers
  12. {
  13.  #######################################################################
  14.  # look for a php header...could require a valid file, maybe not
  15.  my @test_files=qw/\/index.php \/junk999.php \/ \/index.php3/;
  16.  my $done=0;
  17.  foreach my $f (@test_files)
  18.   {
  19.    (my $RES , $CONTENT) = fetch("$f","GET");
  20.    if ($result{'x-powered-by'} ne "")
  21.     { 
  22.      $done=1;
  23.      nprint("- Retrieved X-Powered-By header: $result{'x-powered-by'}"); 
  24.      # push version to BUILDITEMS so it can be evaluated later
  25.      push(@BUILDITEMS,$result{'x-powered-by'});
  26.     }
  27.   if ($done) { last; }
  28.   }
  29.  #######################################################################
  30.  # look for the Servlet-Engine info
  31.  if ($result{'servlet-engine'} ne "")
  32.    { 
  33.     my $x=$result{'servlet-engine'};
  34.     $x = ~s/\(.*$//;
  35.     $x=~s/\s+//g;
  36.     nprint("- Retrieved servlet-engine headers:$x");
  37.     push(@BUILDITEMS,$x);
  38.    
  39.     $x=$result{'servlet-engine'};
  40.     $x=~s/^.*\(//;
  41.     $x=~s/\).*$//;
  42.     my @bits=split(/;/,$x);
  43.     foreach my $bit (@bits) 
  44.       { 
  45.        nprint("- Retrieved servlet-engine headers : $bit"); 
  46.        push(@BUILDITEMS,$bit); 
  47.       }
  48.     }
  49.  #######################################################################
  50.  # Content-Location header in IIS 4
  51.  # Don't use fetch() just so we have some extra control
  52.  #######################################################################
  53.   my $Host_whisker_old=$request{'whisker'}{'Host'};
  54.   my $Host_old=$request{'Host'};
  55.   LW::http_fixup_request(\%request);
  56.   LW::http_reset();
  57.   delete $request{'whisker'}{'Host'};
  58.   delete $request{'Host'};
  59.   $request{'whisker'}->{'uri'}="/";
  60.   $request{'whisker'}->{'method'}="GET";
  61.   $request{'whisker'}{'http_ver'}="1.0";
  62.   LW::http_do_request(\%request,\%result);
  63.   if (($result{'content-location'} ne "") && ($result{'content-location'} =~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) && ($result{'content-location'} !~ /$TARGETS{$CURRENT_HOST_ID}{ip}/))
  64.     { 
  65.      nprint("+ IIS may reveal its internal IP in the Content-Location header via a request to the root directory. The value is \"$result{'content-location'}\". CAN-2000-0649."); 
  66.     }
  67.  
  68.   LW::http_fixup_request(\%request);
  69.   LW::http_reset();
  70.   delete $request{'whisker'}{'Host'};
  71.   delete $request{'Host'};
  72.   $request{'whisker'}->{'uri'}="/images";
  73.   $request{'whisker'}->{'method'}="GET";
  74.   $request{'whisker'}{'version'}="1.0";
  75.   LW::http_do_request(\%request,\%result);
  76.   if (($result{'location'} ne "") && ($result{'location'} =~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) && ($result{'location'} !~ /$TARGETS{$CURRENT_HOST_ID}{ip}/))
  77.     { 
  78.      nprint("+ OSVDB-630: IIS may reveal its internal IP in the Location header via a request to the /images directory. The value is \"$result{'location'}\". CAN-2000-0649."); 
  79.     }
  80.   $request{'whisker'}{'Host'}=$Host_whisker_old;
  81.   $request{'Host'}=$Host_old;
  82.   
  83. #######################################################################
  84. # DAAP-Server, found on an Apple iTunes client/server
  85.  if ($result{'daap-server'} ne "")
  86.    {
  87.     my $x=$result{'daap-server'};
  88.     $x=~s/\s+.*$//;
  89.     nprint("- Retrieved DAAP-Server header: $result{'daap-server'}");
  90.     push(@BUILDITEMS,$x);
  91.    }
  92. }
  93. 1;
  94.